#include <iostream>

using namespace std;

class Widget
{
public:
    Widget();
    virtual ~Widget();
    virtual std::size_t size() const;
    virtual void normalize();
    void swap(Widget &other);
};

void doProcessing(Widget &w)
{
    if (w.size() > 10)
    {}
}

template <typename T>
void doProcessing(T& w)
{
    if (w.size() > 10)
    {
        T temp(w);
        temp.normalize();
        temp.swap(w);
    }
}

int main(int argc, char *argv[])
{
    return 0;
}
